/*
 * Copyright (c) 2007-2021 西安交通信息投资营运有限公司 版权所有
 */

package com.xci.xajtfb.wxc.entity;

import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.annotation.ExcelIgnore;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.github.lvyanyang.core.BaseEntity;
import com.github.lvyanyang.core.Const;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;

import java.util.Date;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * 教练车基本资料
 * @author 马星俊 maxingjun@xci96716.com
 * @since 2021-03-01 17:39:46
 */
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(description = "教练车基本资料")
public class SchVehicle extends BaseEntity {
    /**
     * 主键
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @ExcelIgnore
    @Excel(name = "主键", width = 20d)
    @ApiModelProperty(value = "主键", position = 1)
    private Long id;

    /**
     * 车牌号
     */
    @Length(max = 50, message = "车牌号长度不能超过{max}个字符")
    @Excel(name = "车牌号", width = 20d)
    @ApiModelProperty(value = "车牌号", position = 2)
    private String vehicleNumber;

    /**
     * 驾校主键
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @NotNull(message = "驾校主键不能为空")
    @Excel(name = "驾校主键", width = 20d)
    @ApiModelProperty(value = "驾校主键", required = true, position = 3)
    private Long schoolId;

    /**
     * 驾校名称
     */
    @Excel(name = "驾校名称", width = 20d)
    @ApiModelProperty(value = "驾校名称", required = true, position = 3)
    private String schoolName;

    /**
     * 原车牌号
     */
    @Length(max = 50, message = "原车牌号长度不能超过{max}个字符")
    @Excel(name = "原车牌号", width = 20d)
    @ApiModelProperty(value = "原车牌号", position = 4)
    private String vehicleNumberOld;

    /**
     * 车主
     */
    @Length(max = 50, message = "车主长度不能超过{max}个字符")
    @Excel(name = "车主", width = 20d)
    @ApiModelProperty(value = "车主", position = 5)
    private String vehicleOwner;

    /**
     * 车主拼音
     */
    @Length(max = 200, message = "车主拼音长度不能超过{max}个字符")
    @Excel(name = "车主拼音", width = 20d)
    @ApiModelProperty(value = "车主拼音", position = 6)
    private String vehicleOwnerSpell;

    /**
     * 车型
     */
    @Length(max = 50, message = "车型长度不能超过{max}个字符")
    @Excel(name = "车型", width = 20d)
    @ApiModelProperty(value = "车型", position = 7)
    private String vehicleType;

    /**
     * 类别
     */
    @Length(max = 50, message = "类别长度不能超过{max}个字符")
    @Excel(name = "类别", width = 20d)
    @ApiModelProperty(value = "类别", position = 8)
    private String vehicleCategory;

    /**
     * 状态 [正常_1,维修_2,报废_3,转校中_4,已删除_10]
     */
    @NotNull(message = "状态 [正常_1,维修_2,报废_3,转校中_4,已删除_10]不能为空")
    @Excel(name = "状态 [正常_1,维修_2,报废_3,转校中_4,已删除_10]", width = 20d)
    @ApiModelProperty(value = "状态 [正常_1,维修_2,报废_3,转校中_4,已删除_10]", required = true, position = 9)
    private Integer status;

    /**
     * 出厂日期
     */
    @Excel(name = "出厂日期", width = 20d, exportFormat = Const.DEFAULT_DATETIME_PATTERN)
    @ApiModelProperty(value = "出厂日期", position = 10)
    private Date productionDate;

    /**
     * 购入日期
     */
    @Excel(name = "购入日期", width = 20d, exportFormat = Const.DEFAULT_DATETIME_PATTERN)
    @ApiModelProperty(value = "购入日期", position = 11)
    private Date purchaseDate;

    /**
     * 价格
     */
    @NotNull(message = "价格不能为空")
    @Excel(name = "价格", width = 20d)
    @ApiModelProperty(value = "价格", required = true, position = 12)
    private Double price;

    /**
     * 限制人数
     */
    @NotNull(message = "限制人数不能为空")
    @Excel(name = "限制人数", width = 20d)
    @ApiModelProperty(value = "限制人数", required = true, position = 13)
    private Integer limitNumber;

    /**
     * 发动机号
     */
    @Length(max = 100, message = "发动机号长度不能超过{max}个字符")
    @Excel(name = "发动机号", width = 20d)
    @ApiModelProperty(value = "发动机号", position = 14)
    private String engineNumber;

    /**
     * 吨位
     */
    @Excel(name = "吨位", width = 20d)
    @ApiModelProperty(value = "吨位", position = 15)
    private Double vehicleTonnage;

    /**
     * 车长
     */
    @NotNull(message = "车长不能为空")
    @Excel(name = "车长", width = 20d)
    @ApiModelProperty(value = "车长", required = true, position = 16)
    private Integer vehicleLong;

    /**
     * 车宽
     */
    @NotNull(message = "车宽不能为空")
    @Excel(name = "车宽", width = 20d)
    @ApiModelProperty(value = "车宽", required = true, position = 17)
    private Integer vehicleWidth;

    /**
     * 车高
     */
    @NotNull(message = "车高不能为空")
    @Excel(name = "车高", width = 20d)
    @ApiModelProperty(value = "车高", required = true, position = 18)
    private Integer vehicleHeight;

    /**
     * 字号
     */
    @Length(max = 50, message = "字号长度不能超过{max}个字符")
    @Excel(name = "字号", width = 20d)
    @ApiModelProperty(value = "字号", position = 19)
    private String licenseNumber;

    /**
     * 发证日期
     */
    @Excel(name = "发证日期", width = 20d, exportFormat = Const.DEFAULT_DATETIME_PATTERN)
    @ApiModelProperty(value = "发证日期", position = 20)
    private Date certificationDate;

    /**
     * 字前缀
     */
    @Length(max = 50, message = "字前缀长度不能超过{max}个字符")
    @Excel(name = "字前缀", width = 20d)
    @ApiModelProperty(value = "字前缀", position = 21)
    private String licensePrefix;

    /**
     * 车身颜色
     */
    @Length(max = 50, message = "车身颜色长度不能超过{max}个字符")
    @Excel(name = "车身颜色", width = 20d)
    @ApiModelProperty(value = "车身颜色", position = 22)
    private String vehicleColor;

    /**
     * 车辆品牌
     */
    @Length(max = 100, message = "车辆品牌长度不能超过{max}个字符")
    @Excel(name = "车辆品牌", width = 20d)
    @ApiModelProperty(value = "车辆品牌", position = 23)
    private String vehicleBrand;

    /**
     * 审验开始时间
     */
    @Excel(name = "审验开始时间", width = 20d, exportFormat = Const.DEFAULT_DATETIME_PATTERN)
    @ApiModelProperty(value = "审验开始时间", position = 24)
    private Date verificationStartdate;

    /**
     * 审验有效期
     */
    @Excel(name = "审验有效期", width = 20d, exportFormat = Const.DEFAULT_DATETIME_PATTERN)
    @ApiModelProperty(value = "审验有效期", position = 25)
    private Date verificationEnddate;

    /**
     * 审验结果
     */
    @Length(max = 50, message = "审验结果长度不能超过{max}个字符")
    @Excel(name = "审验结果", width = 20d)
    @ApiModelProperty(value = "审验结果", position = 26)
    private String verificationResult;

    /**
     * 技术评定时间
     */
    @Excel(name = "技术评定时间", width = 20d, exportFormat = Const.DEFAULT_DATETIME_PATTERN)
    @ApiModelProperty(value = "技术评定时间", position = 27)
    private Date evaluateDate;

    /**
     * 技术评定等级
     */
    @Length(max = 50, message = "技术评定等级长度不能超过{max}个字符")
    @Excel(name = "技术评定等级", width = 20d)
    @ApiModelProperty(value = "技术评定等级", position = 28)
    private String evaluateGrade;

    /**
     * 车辆图片路径
     */
    @Length(max = 500, message = "车辆图片路径长度不能超过{max}个字符")
    @Excel(name = "车辆图片路径", width = 20d)
    @ApiModelProperty(value = "车辆图片路径", position = 29)
    private String vehicleUrl;

    /**
     * 车牌颜色
     */
    @Length(max = 50, message = "车牌颜色长度不能超过{max}个字符")
    @Excel(name = "车牌颜色", width = 20d)
    @ApiModelProperty(value = "车牌颜色", position = 30)
    private String vehicleNumberColor;

    /**
     * 培训车型
     */
    @Length(max = 100, message = "培训车型长度不能超过{max}个字符")
    @Excel(name = "培训车型", width = 20d)
    @ApiModelProperty(value = "培训车型", position = 31)
    private String trainingVehicleType;

    /**
     * 审核状态 [待上报_1,已上报_2,审核通过_3,驳回_4]
     */
    @NotNull(message = "审核状态 [待上报_1,已上报_2,审核通过_3,驳回_4]不能为空")
    @Excel(name = "审核状态 [待上报_1,已上报_2,审核通过_3,驳回_4]", width = 20d)
    @ApiModelProperty(value = "审核状态 [待上报_1,已上报_2,审核通过_3,驳回_4]", required = true, position = 32)
    private Integer auditStatus;

    /**
     * 审核时间
     */
    @Excel(name = "审核时间", width = 20d, exportFormat = Const.DEFAULT_DATETIME_PATTERN)
    @ApiModelProperty(value = "审核时间", position = 33)
    private Date auditDate;

    /**
     * 审核人
     */
    @Length(max = 100, message = "审核人长度不能超过{max}个字符")
    @Excel(name = "审核人", width = 20d)
    @ApiModelProperty(value = "审核人", position = 34)
    private String auditName;

    /**
     * 教练员主键
     */
    @Length(max = 100, message = "教练员主键长度不能超过{max}个字符")
    @Excel(name = "教练员主键", width = 20d)
    @ApiModelProperty(value = "教练员主键", position = 35)
    private String coachId;

    /**
     * 油耗
     */
    @Length(max = 100, message = "油耗长度不能超过{max}个字符")
    @Excel(name = "油耗", width = 20d)
    @ApiModelProperty(value = "油耗", position = 36)
    private String oilConsumption;

    /**
     * 车架号
     */
    @Length(max = 100, message = "车架号长度不能超过{max}个字符")
    @Excel(name = "车架号", width = 20d)
    @ApiModelProperty(value = "车架号", position = 37)
    private String frameNumber;

    /**
     * 燃油类型
     */
    @Length(max = 100, message = "燃油类型长度不能超过{max}个字符")
    @Excel(name = "燃油类型", width = 20d)
    @ApiModelProperty(value = "燃油类型", position = 38)
    private String fuelType;

    /**
     * 档位类型
     */
    @Length(max = 100, message = "档位类型长度不能超过{max}个字符")
    @Excel(name = "档位类型", width = 20d)
    @ApiModelProperty(value = "档位类型", position = 39)
    private String gearType;

    /**
     * 区域名称
     */
    @NotBlank(message = "区域名称不能为空")
    @Length(max = 50, message = "区域名称长度不能超过{max}个字符")
    @Excel(name = "区域名称", width = 20d)
    @ApiModelProperty(value = "区域名称", required = true, position = 40)
    private String areaName;

    /**
     * 区域编号
     */
    @NotBlank(message = "区域编号不能为空")
    @Length(max = 50, message = "区域编号长度不能超过{max}个字符")
    @Excel(name = "区域编号", width = 20d)
    @ApiModelProperty(value = "区域编号", required = true, position = 41)
    private String areaCode;

    /**
     * 座位数
     */
    @NotNull(message = "座位数不能为空")
    @Excel(name = "座位数", width = 20d)
    @ApiModelProperty(value = "座位数", required = true, position = 42)
    private Integer seatCount;

    /**
     * 审核意见
     */
    @Length(max = 500, message = "审核意见长度不能超过{max}个字符")
    @Excel(name = "审核意见", width = 20d)
    @ApiModelProperty(value = "审核意见", position = 43)
    private String auditOpinion;

    /**
     * 数据来源[行业录入_1,企业录入_2]
     */
    @NotNull(message = "数据来源[行业录入_1,企业录入_2]不能为空")
    @Excel(name = "数据来源[行业录入_1,企业录入_2]", width = 20d)
    @ApiModelProperty(value = "数据来源[行业录入_1,企业录入_2]", required = true, position = 44)
    private Integer inputSources;

    /**
     * 是否黑名单[是_1,否__0]
     */
    @NotNull(message = "是否黑名单[是_1,否__0]不能为空")
    @Excel(name = "是否黑名单[是_1,否__0]", width = 20d)
    @ApiModelProperty(value = "是否黑名单[是_1,否__0]", required = true, position = 45)
    private Integer isblacklist;

    /**
     * 旧系统主键id
     */
    @Length(max = 50, message = "旧系统主键id长度不能超过{max}个字符")
    @Excel(name = "旧系统主键id", width = 20d)
    @ApiModelProperty(value = "旧系统主键id", position = 46)
    private String oldStrid;

    /**
     * 创建人主键
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @Excel(name = "创建人主键", width = 20d)
    @ApiModelProperty(value = "创建人主键", position = 47)
    private Long createUserId;

    /**
     * 创建人姓名
     */
    @Length(max = 100, message = "创建人姓名长度不能超过{max}个字符")
    @Excel(name = "创建人姓名", width = 20d)
    @ApiModelProperty(value = "创建人姓名", position = 48)
    private String createUserName;

    /**
     * 创建时间
     */
    @Excel(name = "创建时间", width = 20d, exportFormat = Const.DEFAULT_DATETIME_PATTERN)
    @ApiModelProperty(value = "创建时间", position = 49)
    private Date createDateTime;

    /**
     * 修改人主键
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @Excel(name = "修改人主键", width = 20d)
    @ApiModelProperty(value = "修改人主键", position = 50)
    private Long updateUserId;

    /**
     * 修改人姓名
     */
    @Length(max = 100, message = "修改人姓名长度不能超过{max}个字符")
    @Excel(name = "修改人姓名", width = 20d)
    @ApiModelProperty(value = "修改人姓名", position = 51)
    private String updateUserName;

    /**
     * 修改时间
     */
    @Excel(name = "修改时间", width = 20d, exportFormat = Const.DEFAULT_DATETIME_PATTERN)
    @ApiModelProperty(value = "修改时间", position = 52)
    private Date updateDateTime;

}